from datetime import time
from functools import wraps


def bubble_sort(items, comp=lambda x, y: x > y):
    items = items[:]
    for i in range(len(items) - 1):
        swapped = False
        for j in range(len(items) - i - 1):
            if comp(items[j], items[j + 1]):
                items[j], items[j + 1] = items[j + 1], items[j]
                swapped = True
        if not swapped:
            break
    return items



## 函数的高阶用法
#filter(lambda x: x % 2, range(1, 10))：使用 filter 函数过滤出 range(1, 10) 中满足条件的元素。
# 这里的条件是 lambda x: x % 2，即选择那些除以2余数不为0的数字，也就是所有的奇数。因此，这一步会生成一个包含1到9之间所有奇数的序列：[1, 3, 5, 7, 9]。
# map(lambda x: x ** 2, ...)：将上一步得到的奇数序列中的每个元素传递给 map 函数。
# map 函数使用 lambda x: x ** 2 这个lambda函数对每个元素进行操作，这个lambda函数的作用是计算每个元素的平方。

#list(...)：最后，使用 list 函数将 map 对象转换成列表。
l = list(map(lambda x: x ** 2, filter(lambda x: x % 2, range(1, 10))))
## 输出[1, 9, 25, 49, 81]
print(l)

items2 = [x ** 2 for x in range(1, 10) if x % 2]
print(items2)



if __name__ == '__main__':
    print(bubble_sort([1, 2, 99, 4, 5, 6, 7, 8, 9, 10]))